//package jp.sourceforge.talisman.mds.io;
//
///*
// * $Id: MdsTableParserTest.java,v 1.1 2009/09/12 05:06:19 weiwei Exp $
// */
//
//import java.io.BufferedReader;
//import java.io.ByteArrayInputStream;
//import java.io.IOException;
//import java.io.StringReader;
//import java.util.HashSet;
//import java.util.Set;
//
//import jp.sourceforge.talisman.csvio.CsvParser;
//import jp.sourceforge.talisman.mds.Table;
//
//import org.junit.Assert;
//import org.junit.Before;
//import org.junit.Test;
//
///**
// * 
// * @author Haruaki Tamada
// * @version $Revision: 1.1 $ 
// */
//public class MdsTableParserTest{
//    private String japanCityData;
//    private String rhombusData;
//
//    @Before
//    public void initializeData(){
//        japanCityData = ",札幌,東京,金沢,大阪,福岡\r\n" + 
//            "札幌,,,,,\r\n" +
//            "東京,832,,,,\r\n" + 
//            "金沢,806,299,,,\r\n" +
//            "大阪,1079,429,260,,\r\n" +
//            "福岡,1417,1092,689,481,";
//        rhombusData = "0, 1.25, 1, 1.25\r\n" + 
//            "1.25, 0, 1.25, 4\r\n" + 
//            "1, 1.25, 0, 1.25\r\n" +
//            "1.25, 4, 1.25, 0";
//    }
//
//    @Test
//    public void testNames() throws Exception{
//        MdsTableParser parser = new MdsTableParser(new StringReader(japanCityData));
//        Table<String> table = parser.parse();
//        
//        Set<String> set = new HashSet<String>();
//        set.add("札幌"); set.add("東京");
//        set.add("金沢"); set.add("大阪");
//        set.add("福岡");
//
//        String[] names = table.getKeys(new String[table.getKeySize()]);
//        for(int i = 0; i < names.length; i++){
//            Assert.assertTrue(set.contains(names[i]));
//            set.remove(names[i]);
//        }
//        Assert.assertEquals(0, set.size());
//    }
//
//    @Test
//    public void testReader() throws Exception{
//        MdsTableParser parser = new MdsTableParser(new StringReader(japanCityData));
//        Table<String> table = parser.parse();
//
//        Assert.assertEquals(5, table.getKeySize());
//        Assert.assertEquals( 832d, table.getValue("札幌", "東京").doubleValue(), 1E-6);
//        Assert.assertEquals( 806d, table.getValue("札幌", "金沢").doubleValue(), 1E-6);
//        Assert.assertEquals(1079d, table.getValue("札幌", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals(1417d, table.getValue("札幌", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 299d, table.getValue("東京", "金沢").doubleValue(), 1E-6);
//        Assert.assertEquals( 429d, table.getValue("東京", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals(1092d, table.getValue("東京", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 260d, table.getValue("金沢", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals( 689d, table.getValue("金沢", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 481d, table.getValue("大阪", "福岡").doubleValue(), 1E-6);
//    }
//
//    @Test
//    public void testInputStream() throws Exception{
//        MdsTableParser parser = new MdsTableParser(new ByteArrayInputStream(japanCityData.getBytes()));
//        Table<String> table = parser.parse();
//
//        Assert.assertEquals(5, table.getKeySize());
//        Assert.assertEquals( 832, table.getValue("札幌", "東京").doubleValue(), 1E-6);
//        Assert.assertEquals( 806, table.getValue("札幌", "金沢").doubleValue(), 1E-6);
//        Assert.assertEquals(1079, table.getValue("札幌", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals(1417, table.getValue("札幌", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 299, table.getValue("東京", "金沢").doubleValue(), 1E-6);
//        Assert.assertEquals( 429, table.getValue("東京", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals(1092, table.getValue("東京", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 260, table.getValue("金沢", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals( 689, table.getValue("金沢", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 481, table.getValue("大阪", "福岡").doubleValue(), 1E-6);
//    }
//
//    @Test
//    public void testCsvParser() throws Exception{
//        MdsTableParser parser = new MdsTableParser(new CsvParser(new BufferedReader(new StringReader(japanCityData))));
//        Table<String> table = parser.parse();
//
//        Assert.assertEquals(5, table.getKeySize());
//        Assert.assertEquals( 832, table.getValue("札幌", "東京").doubleValue(), 1E-6);
//        Assert.assertEquals( 806, table.getValue("札幌", "金沢").doubleValue(), 1E-6);
//        Assert.assertEquals(1079, table.getValue("札幌", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals(1417, table.getValue("札幌", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 299, table.getValue("東京", "金沢").doubleValue(), 1E-6);
//        Assert.assertEquals( 429, table.getValue("東京", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals(1092, table.getValue("東京", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 260, table.getValue("金沢", "大阪").doubleValue(), 1E-6);
//        Assert.assertEquals( 689, table.getValue("金沢", "福岡").doubleValue(), 1E-6);
//        Assert.assertEquals( 481, table.getValue("大阪", "福岡").doubleValue(), 1E-6);
//    }
//
//    @Test(expected=NumberFormatException.class)
//    public void testException() throws IOException{
//        MdsTableParser parser = new MdsTableParser(new StringReader(japanCityData));
//        parser.setHeader(false);
//        parser.parse();
//    }
//
//    @Test
//    public void testNoHeader() throws IOException{
//        MdsTableParser parser = new MdsTableParser(new StringReader(rhombusData));
//        parser.setHeader(false);
//        Table<String> table = parser.parse();
//
//        Assert.assertEquals(4, table.getKeySize());
//        Assert.assertEquals(1.25d, table.getValue("0", "1").doubleValue(), 1E-6);
//        Assert.assertEquals(1d,    table.getValue("0", "2").doubleValue(), 1E-6);
//        Assert.assertEquals(1.25d, table.getValue("0", "3").doubleValue(), 1E-6);
//        Assert.assertEquals(1.25d, table.getValue("1", "2").doubleValue(), 1E-6);
//        Assert.assertEquals(4d,    table.getValue("1", "3").doubleValue(), 1E-6);
//        Assert.assertEquals(1.25d, table.getValue("2", "3").doubleValue(), 1E-6);
//
//        Set<String> set = new HashSet<String>();
//        for(int i = 0; i < 4; i++) set.add(String.valueOf(i));
//
//        String[] names = table.getKeys(new String[table.getKeySize()]);
//        for(int i = 0; i < names.length; i++){
//            Assert.assertTrue(set.contains(names[i]));
//            set.remove(names[i]);
//        }
//        Assert.assertEquals(0, set.size());
//    }
//}
